package com.jn.algorithm.day016.question45;

/**
 * @author 江南大学1033190417
 * @date 2022/5/7 21:16
 */
public class Solution {
    //贪心算法
    /*
       如果有多个位置通过跳跃都能够到达最后一个位置，那么我们应该如何进行选择呢？直观上来看，
       我们可以「贪心」地选择距离最后一个位置最远的那个位置，也就是对应下标最小的那个位置。
       因此，我们可以从左到右遍历数组，选择第一个满足要求的位置。找到最后一步跳跃前所在的位置之后，
       我们继续贪心地寻找倒数第二步跳跃前所在的位置，以此类推，直到找到数组的开始位置。
     */
    public int jump(int[] nums) {
        int pos = nums.length - 1;
        int steep = 0;
        while (pos > 0) {
            for (int i = 0; i < pos; i++) {
                if (i + nums[i] >= pos) {
                    pos = i;
                    steep++;
                }
            }
        }
        return steep;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] nums = new int[]{2, 3, 0, 1, 4};
        System.out.println(solution.jump(nums));
    }
}
